1. Field of the Disclosure
The present disclosure relates to the field of middleware technology, and more particularly, to efficiently utilizing and managing multiple types of middleware.
2. Background Information
In client-server computing, supporting software known generally as middleware facilitates better and more efficient use of resources, and provides clients access to information to be served on an as-needed basis. Generally, middleware is a communications layer that allows software applications to interact across various hardware and network environments. Conventional types of middleware used in distributed computing include, for example, Common Object Request Broker Architecture (CORBA), Java Message Service (JMS) and WebServices, such as Simple Object Access Protocol (SOAP)/HTTP or SOAP/JMS. The different types may inhibit communication between clients and services that use different middleware types.
The basic functions of middleware may be logically grouped into transport, protocol, discovery and application management. Transport includes the means by which data and instructions are moved in a distributed environment. Examples of transport are transmission control protocol (TCP), JMS and HTTP. Protocol is an agreed upon formatting of data and instructions, so that both sides of a conversation understand the message contents. Examples of protocol include Internet Inter-Orb Protocol (IIOP) (used by CORBA) and SOAP. Encoding is essentially a subset of protocol, and is an agreed upon formatting for data. Examples of encoding include Common Data Representation (CDR) (used by CORBA), External Data Representation (XDR) and SOAP encoding. Discovery includes the means by which services advertise their availability and likewise clients find these services to use. Directories and name services such as LDAP and CORBA naming service are typical implementations. Application management has become a fourth middleware function, largely due to the relationship between managing the availability of a service and updating the directory when service availability changes. For example, application management includes registering service availability in the directory when it starts and un-registering the service when it stops.
The various middlewares function in different ways, but each essentially follows the same general pattern. First, a service corresponding to a particular interface is created and deployed on networked computing equipment. Second, a service process is started on the network, and “listens” for incoming client calls. Third, the service responds to a known, published or discoverable interface. Fourth, a service has a programmed element, known as an Implementation (e.g., business logic or, in the case of a proxy architecture, delegate), which is plugged into the middleware, and the middleware is responsible for handing off the network-sent communications and returning any required corresponding data. Fifth, the service's health is typically monitored, so that sick services can be restarted, or more service capacity can be added as needed by quantities of client interactions (collectively known as Service Management).
There are a number of types middleware that facilitate the transfer of data, for example, between clients and servers. All types of middleware have in common a point at which a message, gathered from the network, is transferred, for example, to a memory so that a programming language can reference it. Transforming the memory set into data structures or formats that the program is able to understand is called “marshalling.” In other words, marshalling is the middleware act of transforming a program's native data representation to an encoding ready for transport.
Some middleware delivers raw data or messages from a client in either text (character based) or binary (byte forms). For example, JMS typically delivers text data, in either Extensible Markup Language (XML) or SOAP format. CORBA, on the other hand, typically delivers binary data and supports either XDR or CDR marshalling. Regardless of the type of middleware, the data must be understood by both the client and the server, at least in part, requiring an appropriate interface.
Currently, numerous types of middleware are available, generally having a wide variety of capabilities. Middleware such as CORBA and Enterprise JavaBeans (EJB) define transport, protocol and data marshalling as a whole. Middleware such as JMS only defines the transport and some elements of protocol. The freedom of message content in JMS has allowed the growth of text-based data forms, such as SOAP, in addition to the more traditionally defined binary formats, such as CDR, XDR and the like. Efficient enterprise integration of services requires that message content be transformed with as little human programming as possible. Accordingly, there are often multiple middlewares available within a single organization. Typically, either more than one service for each middleware is created, requiring multiple locations for the business logic to reside, or one service holds the business logic, requiring the other services to delegate calls to it (i.e., a proxy). These strategies require multiple deployments and management schemes.
Further, the variety of middlewares, created with a number of different strengths and followings, is significant. A computing entity, such as a business or other enterprise, may not have the funds and resources, or even the business drivers to keep trading all their existing services to multiple middlewares, especially in terms of the most recent technologies and trends. Additionally, while products are often created that can talk as a client to existing services, rarely do they address the fact that these existing resources may need to talk to the new services for legal or other business drivers. Thus, many enterprises find themselves needing to support access to key services in a variety of middlewares and data formats.
Accordingly, a need exists for efficiently integrating and/or coordinating the implementation, use and management of multiple different types of middleware.